Présentation

Columns

Columns

Il existe une cinquaintaine d’espèces de requins dans la Méditerranée, et une centaine d’espèce dans l’Atlantique.
La plupart de ces espèces sont innofensives et trop petits pour constituer une réelle menace pour l’homme.

Cependant, certaines espèces, dangereuses, peuvent être à l’origine de dégàts importants suite à leur interraction avec l’homme.

Nous tentons, dans cette étude, de visualiser les pays les plus touchés par les requins, et d’identifier les natures de ces attaques.

Jeu de donnée à notre disposition:
- le nombre d’attaque du requin par pays et par année
- la nature de l’attaque (Type)
- l’activité du victime lors de l’attaque du requin
- la conséquence de l’attaque (‘mortel’ ou ‘non mortel’)

      Year                Type                  Country         Area          
 2015   : 143   Unprovoked  :3676   usa             :1954   Length:5054       
 2017   : 136   Provoked    : 498   australia       :1005   Class :character  
 2016   : 130   Invalid     : 421   south africa    : 521   Mode  :character  
 2011   : 128   Boating     : 164   papua new guinea: 126                     
 2014   : 127   Sea Disaster: 161   brazil          : 107                     
 2008   : 122   Boat        : 130   bahamas         :  99                     
 (Other):4268   (Other)     :   4   (Other)         :1242                     
               Activity    Fatal..Y.N.        Consequence  
 sport/ activity   :2694   Length:5054        Autres:4236  
 fishing           :1046   Class :character   Y     : 818  
 Diving            : 474   Mode  :character                
                   : 380                                   
 boat/ship accident: 203                                   
 Air/Sea disaster  :  56                                   
 (Other)           : 201                                   

Vision Globale

Columns

Carte mondiale: Nombre totale d’attaques par les requins entre 1930 et 2018

Columns

Focus sur les 3 pays les plus touchés

Évolution temporelle

La nature des attaques

Row

Description des attaques les plus récurrentes

Row

“Unprovoked”: Activities

“Unprovoked”: Dégats

---
title: "Attaques des requins"
author: "Laurence et Shaimma"
output: 
  flexdashboard::flex_dashboard:
    navbar:
      - { title: "Source", align:right, href: "https://www.kaggle.com/code/jamesssd7245/most-dangeurous-sharks-countries-worldmap-analysis"}
    source_code: embed
    theme: journal
    orientation: columns
    vertical_layout: fill
params:
  setup_path: ../resources/
---

   


```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
library(plotly)
library("sf")
library("rnaturalearth")
library("rnaturalearthdata")
library(RColorBrewer)
library("ggnewscale")  
library(ggrepel)
library(wesanderson)
library(cowplot)
```

```{r, include=FALSE}
# mise en forme 
requin <- read.csv("attacks.csv") 
req <- requin %>% 
  select("Year", "Type", "Country", "Area","Activity", "Fatal..Y.N.") %>%
  filter(Year >= 1930) 
```


Présentation {data-icon="fas fa-mug-saucer"}
=====================================

Columns {data-width=400}
-----------------------------------------------------------------------
```{r picture, echo = F, out.width = '100%'}
knitr::include_graphics("pngegg-2.png")
```

Columns {data-width=700}
-----------------------------------------------------------------------

```{r,include=FALSE}

req$Country <- tolower(req$Country)

req_pie <- req 
req_pie[which(req_pie$Fatal..Y.N. !="Y"),]$Fatal..Y.N.  <- "Autres"
req_pie[which(req_pie$Type == "Questionable"),]$Type <- "Invalid"

# netoyage du jeu de donnée

# diving 
for (i in (1:nrow(req_pie))) {
  if (grepl("diving", req_pie$Activity[i]) | (grepl("Diving", req_pie$Activity[i])) |
      (grepl("Dived", req_pie$Activity[i]))) {
    req_pie$Activity[i] <- "Diving"
  } 
}

# fishing
for (i in (1:nrow(req_pie))) {
  if (grepl("fishing", req_pie$Activity[i]) | (grepl("Fishing", req_pie$Activity[i])) |
      (grepl("lobsters", req_pie$Activity[i])) |
      grepl("fish", req_pie$Activity[i]) |
      grepl("bichiques", req_pie$Activity[i]) |
      grepl("Casting", req_pie$Activity[i]) |
      grepl("sardines", req_pie$Activity[i]) |
      grepl("Crabbing", req_pie$Activity[i]) |
      grepl("Clamming", req_pie$Activity[i]) |
      grepl("turtle", req_pie$Activity[i]) |
      grepl("prawns", req_pie$Activity[i])|
      grepl("net", req_pie$Activity[i])
  ) {
    req_pie$Activity[i] <- "fishing"
  } 
}

# air or sea disaster
for (i in (1:nrow(req_pie))) {
  if (grepl("disaster", req_pie$Activity[i]) | grepl("Disaster", req_pie$Activity[i])| 
      (grepl("air", req_pie$Activity[i])) | (grepl("plane", req_pie$Activity[i]))
      | (grepl("757", req_pie$Activity[i]))|
      grepl("hurricane", req_pie$Activity[i])
  ) {
    req_pie$Activity[i] <- "Air/Sea disaster"
  } 
}

# boat/ship accident de bateau 
for (i in (1:nrow(req_pie))) {
  if (grepl("Boat", req_pie$Activity[i]) | (grepl("boat", req_pie$Activity[i]))
      | (grepl("ship", req_pie$Activity[i])) | (grepl("Fell", req_pie$Activity[i]))
      | (grepl("Vessel", req_pie$Activity[i])) |
      grepl("sank", req_pie$Activity[i])|
      grepl("promotional film ", req_pie$Activity[i]) |
      grepl("Ferry", req_pie$Activity[i])|
      grepl("ferry", req_pie$Activity[i])|
      grepl("capsiz", req_pie$Activity[i]) |
      grepl("MV Dona Marilyn", req_pie$Activity[i]) |
      grepl("schooner Elizabeth", req_pie$Activity[i]) |
      grepl("Towing", req_pie$Activity[i]) |
      grepl("Tzenny Chandris", req_pie$Activity[i]) |
      grepl("Wreck", req_pie$Activity[i]) |
      grepl("wreck", req_pie$Activity[i]) |
      grepl("dinghy", req_pie$Activity[i]) |
      grepl("yacht", req_pie$Activity[i]) |
      grepl("Chumming", req_pie$Activity[i]) |
      grepl("raft", req_pie$Activity[i]) |
      grepl("Tagging", req_pie$Activity[i]) |
      grepl("overboard", req_pie$Activity[i]) |
      grepl("free the shark", req_pie$Activity[i]) |
      grepl("rescue a shark", req_pie$Activity[i]) 
  ) {
    req_pie$Activity[i] <- "boat/ship accident"
  } 
}

# sport 
for (i in (1:nrow(req_pie))) {
  if (grepl("surf", req_pie$Activity[i]) | grepl("Surf", req_pie$Activity[i]) |(grepl("boarding", req_pie$Activity[i]))|
      grepl("Boarding", req_pie$Activity[i]) |
      (grepl("batching", req_pie$Activity[i]))| (grepl("Bathing", req_pie$Activity[i])) |
      (grepl("bathing", req_pie$Activity[i])) |
      (grepl("Swim", req_pie$Activity[i]))| (grepl("swim", req_pie$Activity[i])) |
      (grepl("fell", req_pie$Activity[i])) | (grepl("Paddling", req_pie$Activity[i]))| 
      (grepl("Paddling", req_pie$Activity[i])) | (grepl("water", req_pie$Activity[i]))
      | (grepl("Snorkeling", req_pie$Activity[i]))
      | (grepl("Sitting", req_pie$Activity[i])) | 
      grepl("Happy Jack", req_pie$Activity[i]) |
      grepl("Bending", req_pie$Activity[i]) |
      grepl("Canoe", req_pie$Activity[i]) |
      grepl("paddling", req_pie$Activity[i]) |
      grepl("Kaya", req_pie$Activity[i]) |
      grepl("Lifesaving", req_pie$Activity[i]) |
      grepl("Snorkeling", req_pie$Activity[i]) |
      grepl("Stamding", req_pie$Activity[i])|
      grepl("Wading", req_pie$Activity[i]) |
      grepl("Wash", req_pie$Activity[i]) |
      grepl("Workong", req_pie$Activity[i])| 
      grepl("McIver", req_pie$Activity[i]) |
      grepl("Standing", req_pie$Activity[i]) |
      grepl("Crossing the bay", req_pie$Activity[i])|
      grepl("Walking", req_pie$Activity[i]) |
      grepl("kill a shark", req_pie$Activity[i]) |
      grepl("Removing shark", req_pie$Activity[i]) |
      grepl("Riding", req_pie$Activity[i]) |
      grepl("Board sailing", req_pie$Activity[i])|
      grepl("Exercising", req_pie$Activity[i]) |
      grepl("Feeding sharks", req_pie$Activity[i]) |
      grepl("Filming", req_pie$Activity[i]) |
      grepl("ski", req_pie$Activity[i]) |
      grepl("Jumping", req_pie$Activity[i]) |
      grepl("Paddle", req_pie$Activity[i]) |
      grepl("Play", req_pie$Activity[i]) |
      grepl("Resting", req_pie$Activity[i])  |
      grepl("floatation device", req_pie$Activity[i])|
      grepl("Sculling", req_pie$Activity[i]) |
      grepl("Splashing", req_pie$Activity[i]) |
      grepl("Dr. Marais", req_pie$Activity[i]) |
      grepl("Wrangling", req_pie$Activity[i]) |
      grepl("Photographing", req_pie$Activity[i]) |
      grepl("SUP", req_pie$Activity[i]) |
      grepl("Kakay", req_pie$Activity[i]) 
      
  ) {
    req_pie$Activity[i] <- "sport/ activity" }
}



# adrift
for (i in (1:nrow(req_pie))) {
  if (grepl("Adrift", req_pie$Activity[i]) | grepl("adrift", req_pie$Activity[i]) |
      grepl("Floating", req_pie$Activity[i])|
      grepl("3 men & 2 boys", req_pie$Activity[i]) |
      grepl("float", req_pie$Activity[i])
      ) {
    req_pie$Activity[i] <- "Adrift"
  } 
}

# murder /  war 
for (i in (1:nrow(req_pie))) {
  if (grepl("Murder", req_pie$Activity[i]) ||
      grepl("submarine", req_pie$Activity[i]) |
      grepl("American", req_pie$Activity[i]) |
      grepl("torpedoed", req_pie$Activity[i]) |
      grepl("Torpedoed", req_pie$Activity[i]) |
      grepl("soldiers", req_pie$Activity[i]) |
      grepl("Escaping", req_pie$Activity[i]) |
      grepl("Japanese", req_pie$Activity[i]) |
      grepl("Japan", req_pie$Activity[i]) |
      grepl("Sinking", req_pie$Activity[i]) |
      grepl("SS", req_pie$Activity[i]) |
      grepl("foundered", req_pie$Activity[i])  |
      grepl("US", req_pie$Activity[i])
  ) {
    req_pie$Activity[i] <- "murder /  war "
  } 
}

```


```{r}
req_pres <- req_pie %>%
  mutate("Year" = as.factor(Year), "Country" = as.factor(Country),
         "Type" = as.factor(Type), "Activity" = as.factor(Activity),
         "Consequence"= as.factor(Fatal..Y.N.))
```

Il existe une cinquaintaine d'espèces de requins dans la Méditerranée, et une centaine d'espèce dans l'Atlantique.
La plupart de ces espèces sont innofensives et trop petits pour constituer une réelle menace pour l'homme.

Cependant, certaines espèces, dangereuses, peuvent être à l'origine de dégàts importants suite à leur interraction avec l'homme.
Nous tentons, dans cette étude, de visualiser les pays les plus touchés par les requins, et d'identifier les natures de ces attaques. Jeu de donnée à notre disposition:
- le nombre d’attaque du requin par pays et par année
- la nature de l'attaque (Type)
- l’activité du victime lors de l’attaque du requin
- la conséquence de l’attaque ('mortel' ou 'non mortel')

```{r} summary(req_pres) ``` Vision Globale {data-icon="fas fa-map"} ===================================== Columns {data-width=600} ----------------------------------------------------------------------- ### Carte mondiale: Nombre totale d'attaques par les requins entre 1930 et 2018 ```{r, include=FALSE} ######################################################## # get right dataset for world map construction ######################################################## #=================================== ## read files #=================================== requin <- read.csv("attacks.csv") req <- requin %>% select("Year", "Type", "Country", "Area","Activity", "Fatal..Y.N.") %>% filter(Year >= 1930) # select columns necessary for the construction of the world map req_map <- req %>% group_by(Country) %>% summarize(nb_attaque = n()) # read base map world <- ne_countries(scale = "medium", returnclass = "sf") world <- world %>% select(admin, geometry) # for countries fond <- st_read(dsn = "world-administrative-boundaries/world-administrative-boundaries.shp", stringsAsFactors = F) # for regions #=================================== ## modify element #=================================== # change countries names and site to lower req_map$Country <- tolower(req_map$Country) world$admin <- tolower(world$admin) fond$name <- tolower(fond$name) # standardise site name req_map[req_map$Country == "columbia" ,]$Country <- "colombia" req_map[req_map$Country == "curacao" ,]$Country <- "curaçao" req_map[req_map$Country == "egypt / israel" ,]$Country <- "egypt" # israel req_map[req_map$Country == "grand cayman",]$Country <- "cayman islands" req_map[req_map$Country == "iran / iraq",]$Country <- "iran" # "iraq" req_map[req_map$Country == "italy / croatia" ,]$Country <- "iran" # "italy" req_map[req_map$Country == "maldive islands" ,]$Country <- "maldives" req_map[req_map$Country == "micronesia" ,]$Country <- "federated states of micronesia" req_map[req_map$Country == "nicaragua " ,]$Country <- "nicaragua" req_map[req_map$Country == "palestinian territories" ,]$Country <- "palestine" req_map[req_map$Country == "solomon islands / vanuatu" ,]$Country <- "solomon islands" # et vanatu req_map[req_map$Country == "tanzania" ,]$Country <- "united republic of tanzania" req_map[req_map$Country == "sudan?" ,]$Country <- "sudan" req_map[req_map$Country == "trinidad & tobago" ,]$Country <- "trinidad and tobago" req_map[req_map$Country == "turks & caicos" ,]$Country <- "turks and caicos island" req_map[req_map$Country == "united arab emirates (uae)" ,]$Country <- "united arab emirates" req_map[req_map$Country == "usa" ,]$Country <- "united states of america" req_map[req_map$Country == "western samoa" ,]$Country <- "samoa" # get site present in csv "world" a <- req_map$Country b <- world$admin present_in_world <- a[which(a %in% b == T)] # get site present in csv "fond" a <- as.vector(factor(req_map$Country)) bbis <- as.vector(factor(fond$name)) present_in_fond <- a[which(a %in% bbis == T)] # site present in both present <- union(present_in_world , present_in_fond ) dif <- setdiff(present_in_world ,present_in_fond) # site present in fond and not in world #=================================== ## get the right dataset for countries and regiop #=================================== # find geometry necessary for some site in the base fond geometry_fond <- fond %>% filter(fond$name %in% dif) %>% select("admin"= name, "geometry") geom_init <- rbind(world, geometry_fond) # for every site, calculate totale attacks attack_by_site <- req_map %>% group_by(Country) %>% summarise(nb_att_tot = sum(nb_attaque)) %>% select("admin"= Country, "attacks"= nb_att_tot) # get dataset with geometry and total attacks of every site geom <- merge(geom_init , attack_by_site, by="admin", all.x=T) ######################################################## ## make dataset for oceans and seas ######################################################## # standardisation req_map[req_map$Country == "north atlantic ocean " ,]$Country <-"north atlantic ocean" req_map[req_map$Country == "pacific ocean " ,]$Country <-"pacific ocean" req_map[req_map$Country == "red sea / indian ocean" ,]$Country <-"indian ocean" req_map[req_map$Country == "central pacific" ,]$Country <-"pacific ocean" req_map[req_map$Country == "southwest pacific ocean" ,]$Country <-"south pacific ocean" req_map[req_map$Country == "pacific ocean" ,]$Country <-"mid-pacific ocean" # locate ocean/sea/gulf site present in attacks.csv oce_mer <- c("caribbean sea" , "gulf of aden", "indian ocean", "mid atlantic ocean" ,"mid-pacifc ocean", "north atlantic ocean","north pacific ocean","north sea", "northern arabian sea", "mid-pacific ocean", "persian gulf", "red sea", "south atlantic ocean", "south china sea", "south pacific ocean" ) #========================================================================================= ## get element necessary for every site: latitude, longitude, nb tot of attacks #========================================================================================= lat <- c(14.939588401460744, 12.579150350346652, -31.65256869194269, 0.0012874607478224015, 0.5168641856999522, 37.55840704949698,26.740062627514437, 56.89226369685983, 13.52913765091261, 6.647930428748582, 27.39827299362649, 21.182319274300287, -32.004663545742, 17.010418251252442, -34.74671641096358) long <- c(-74.7792643588162, 47.96353180808757,81.67236879838734, -19.9999143509654, -150.4849986612673, -39.08714830907774, -169.80601017384916, 3.676283675031177, 64.31588270602367, -163.13809314592606, 51.41987343745529, 38.424038461264196, -15.840314716043286, 113.41267801349872, -139.57163512902778) attacks_oce_mer <- req_map %>% filter(Country %in% oce_mer) %>% group_by(Country) %>% summarise(nb_att_tot = sum(nb_attaque)) %>% select("oce_mer"= Country, "attacks"= nb_att_tot) #======================================== # make dataframe #======================================== omg_init <- data.frame(oce_mer, lat, long) omg <- merge(omg_init, attacks_oce_mer, by="oce_mer") geom_test <- data.frame("admin"= c(geom$admin, omg$oce_mer), "lat" = c(rep(NA, 241), omg$lat), "long" = c(rep(NA, 241), omg$long), "attacks" = c(geom$attacks, omg$attacks)) ######################################################## ## still have some site without geometry or localisation ######################################################## all.countries <- req_map$Country all.countries[which( ( all.countries %in% oce_mer| all.countries%in% present )== F)] ######################################################## ## world map ######################################################## map <- geom %>% ggplot() + geom_sf(aes(fill = attacks)) + scale_fill_distiller(palette = "YlGnBu", trans= "log", direction = 1, name="Nombre d'attaque", labels = function(x) sprintf("%.f", x), breaks = c(1, 7, 55, 403, 1954), na.value="#edeef2") # by default, scale_fill_distiller direction is 1 # ================== # Formatted map # ================= map2 <- map + theme_void() + ggtitle("Nombre totale d'attaques par les requins entre 1930 et 2018") + #guides(fill = guide_legend(reverse = T))+ theme(text = element_text(family = 'Gill Sans') # mettre le texte en blanc et type de texte ,plot.title = element_text(size = 11, vjust= 2, hjust= 0.4) ,panel.background = element_rect(fill = '#b3e2f5') # ajouter couleur du fond de carte #,plot.background = element_rect(fill = '#333333') # ajouter couleur de fond ,legend.position="bottom") # ============================ # add oceans /sea/ gulf point # =========================== map3 <- map2# + # new_scale_color() + # geom_point(data = geom_test, # aes(x=long, y=lat, col = attacks, fill=attacks), # colour = "black", pch=21, size=2, show.legend = T) + # # geom_text_repel(data = geom_test, aes(x=long, y=lat, label=admin), # # point.padding = 0.5, # # segment.color = 'white', # # colour = "#394b85", # # size=3)+ # scale_color_distiller(palette = "YlOrRd", trans= "log", direction = 1 ) ``` ```{r} map3 ``` Columns {data-width=400} ----------------------------------------------------------------------- ```{r, include=FALSE} # evolution temporelle requin <- read.csv("attacks.csv") req <- requin %>% select("Date","Year", "Type", "Country", "Area","Activity", "Fatal..Y.N.") %>% filter(Year >= 1930) req3<- req[req$Country %in% c("USA","AUSTRALIA", "SOUTH AFRICA"),] #nbr des attaques par annee val <- req3 %>% count(Year,Type, sort = TRUE) #Types of attacks val[val=="Boating"]<-NA val <- val %>% mutate_at(c('Type'), ~replace_na(.,"Boat")) # val[val==""]<-NA val <- val %>% mutate_at(c('Type'), ~replace_na(.,"Boat")) #graph nbatq <- ggplot(val, aes(Year,n), alpha= Country ) + geom_line(aes( color=Type))+ggtitle("Evolution des attaques des requins pour les 3 premiers Pays") +ylab("Nb Attaques") + xlab("Année")+theme(plot.title = element_text(face="bold",color = "#607c8e", size = , hjust=0.5,vjust=1, family = "Serif"), legend.position = c(0.2, 0.8), axis.title.x = element_text( face = "bold",size=10), axis.title.y = element_text(face = "bold",size=10), panel.background = element_rect(fill = "white"), panel.grid.major = element_blank() ) +scale_y_continuous(breaks = seq(0, 88, by = 10)) + scale_colour_manual(values=c("#DAF7A6", "#E5E4E2", "#FFA500","#C70039", "#E97451", "#6495ED")) ``` ```{r, include=FALSE} typ2 <- req3 %>% group_by(Country) %>% count(Year,Type, sort = TRUE) # typ2[typ2=="Boating"]<-NA typ2 <- typ2 %>% mutate_at(c('Type'), ~replace_na(.,"Boat")) # typ2[typ2==""]<-NA typ2 <- typ2 %>% mutate_at(c('Type'), ~replace_na(.,"Boat")) g <- ggplot(typ2, aes(x=Type, y=n, fill=Country)) +geom_boxplot(outlier.shape=NA)+ scale_fill_manual(values=c("darkgoldenrod1","darkred", "#002868")) + ylab("Nb Attaques")+ theme(axis.text.x = element_text(angle = 90, hjust = 1), panel.background = element_rect(fill = "white"), panel.grid.major = element_line(colour = "#bababa"))+ scale_y_continuous(breaks = seq(0, 88, by = 10)) +ggtitle(" Distribution Types d'attaques par Pays") ``` ### Focus sur les 3 pays les plus touchés ```{r} g ``` ### Évolution temporelle ```{r} ggplotly(nbatq) ``` La nature des attaques {data-icon="fas fa-fish"} ===================================== ```{r,include=FALSE} req$Country <- tolower(req$Country) req_pie <- req %>% filter(Country %in% c("usa", "australia", "south africa")) req_pie[which(req_pie$Fatal..Y.N. !="Y"),]$Fatal..Y.N. <- "Autres" req_pie[which(req_pie$Type == "Questionable"),]$Type <- "Invalid" # netoyage du jeu de donnée # diving for (i in (1:nrow(req_pie))) { if (grepl("diving", req_pie$Activity[i]) | (grepl("Diving", req_pie$Activity[i])) | (grepl("Dived", req_pie$Activity[i]))) { req_pie$Activity[i] <- "Diving" } } # fishing for (i in (1:nrow(req_pie))) { if (grepl("fishing", req_pie$Activity[i]) | (grepl("Fishing", req_pie$Activity[i])) | (grepl("lobsters", req_pie$Activity[i])) | grepl("fish", req_pie$Activity[i]) | grepl("bichiques", req_pie$Activity[i]) | grepl("Casting", req_pie$Activity[i]) | grepl("sardines", req_pie$Activity[i]) | grepl("Crabbing", req_pie$Activity[i]) | grepl("Clamming", req_pie$Activity[i]) | grepl("turtle", req_pie$Activity[i]) | grepl("prawns", req_pie$Activity[i])| grepl("net", req_pie$Activity[i]) ) { req_pie$Activity[i] <- "fishing" } } # air or sea disaster for (i in (1:nrow(req_pie))) { if (grepl("disaster", req_pie$Activity[i]) | grepl("Disaster", req_pie$Activity[i])| (grepl("air", req_pie$Activity[i])) | (grepl("plane", req_pie$Activity[i])) | (grepl("757", req_pie$Activity[i]))| grepl("hurricane", req_pie$Activity[i]) ) { req_pie$Activity[i] <- "Air/Sea disaster" } } # boat/ship accident de bateau for (i in (1:nrow(req_pie))) { if (grepl("Boat", req_pie$Activity[i]) | (grepl("boat", req_pie$Activity[i])) | (grepl("ship", req_pie$Activity[i])) | (grepl("Fell", req_pie$Activity[i])) | (grepl("Vessel", req_pie$Activity[i])) | grepl("sank", req_pie$Activity[i])| grepl("promotional film ", req_pie$Activity[i]) | grepl("Ferry", req_pie$Activity[i])| grepl("ferry", req_pie$Activity[i])| grepl("capsiz", req_pie$Activity[i]) | grepl("MV Dona Marilyn", req_pie$Activity[i]) | grepl("schooner Elizabeth", req_pie$Activity[i]) | grepl("Towing", req_pie$Activity[i]) | grepl("Tzenny Chandris", req_pie$Activity[i]) | grepl("Wreck", req_pie$Activity[i]) | grepl("wreck", req_pie$Activity[i]) | grepl("dinghy", req_pie$Activity[i]) | grepl("yacht", req_pie$Activity[i]) | grepl("Chumming", req_pie$Activity[i]) | grepl("raft", req_pie$Activity[i]) | grepl("Tagging", req_pie$Activity[i]) | grepl("overboard", req_pie$Activity[i]) | grepl("free the shark", req_pie$Activity[i]) | grepl("rescue a shark", req_pie$Activity[i]) ) { req_pie$Activity[i] <- "boat/ship accident" } } # sport for (i in (1:nrow(req_pie))) { if (grepl("surf", req_pie$Activity[i]) | grepl("Surf", req_pie$Activity[i]) |(grepl("boarding", req_pie$Activity[i]))| grepl("Boarding", req_pie$Activity[i]) | (grepl("batching", req_pie$Activity[i]))| (grepl("Bathing", req_pie$Activity[i])) | (grepl("bathing", req_pie$Activity[i])) | (grepl("Swim", req_pie$Activity[i]))| (grepl("swim", req_pie$Activity[i])) | (grepl("fell", req_pie$Activity[i])) | (grepl("Paddling", req_pie$Activity[i]))| (grepl("Paddling", req_pie$Activity[i])) | (grepl("water", req_pie$Activity[i])) | (grepl("Snorkeling", req_pie$Activity[i])) | (grepl("Sitting", req_pie$Activity[i])) | grepl("Happy Jack", req_pie$Activity[i]) | grepl("Bending", req_pie$Activity[i]) | grepl("Canoe", req_pie$Activity[i]) | grepl("paddling", req_pie$Activity[i]) | grepl("Kaya", req_pie$Activity[i]) | grepl("Lifesaving", req_pie$Activity[i]) | grepl("Snorkeling", req_pie$Activity[i]) | grepl("Stamding", req_pie$Activity[i])| grepl("Wading", req_pie$Activity[i]) | grepl("Wash", req_pie$Activity[i]) | grepl("Workong", req_pie$Activity[i])| grepl("McIver", req_pie$Activity[i]) | grepl("Standing", req_pie$Activity[i]) | grepl("Crossing the bay", req_pie$Activity[i])| grepl("Walking", req_pie$Activity[i]) | grepl("kill a shark", req_pie$Activity[i]) | grepl("Removing shark", req_pie$Activity[i]) | grepl("Riding", req_pie$Activity[i]) | grepl("Board sailing", req_pie$Activity[i])| grepl("Exercising", req_pie$Activity[i]) | grepl("Feeding sharks", req_pie$Activity[i]) | grepl("Filming", req_pie$Activity[i]) | grepl("ski", req_pie$Activity[i]) | grepl("Jumping", req_pie$Activity[i]) | grepl("Paddle", req_pie$Activity[i]) | grepl("Play", req_pie$Activity[i]) | grepl("Resting", req_pie$Activity[i]) | grepl("floatation device", req_pie$Activity[i])| grepl("Sculling", req_pie$Activity[i]) | grepl("Splashing", req_pie$Activity[i]) | grepl("Dr. Marais", req_pie$Activity[i]) | grepl("Wrangling", req_pie$Activity[i]) | grepl("Photographing", req_pie$Activity[i]) | grepl("SUP", req_pie$Activity[i]) | grepl("Kakay", req_pie$Activity[i]) ) { req_pie$Activity[i] <- "sport/ activity" } } # adrift for (i in (1:nrow(req_pie))) { if (grepl("Adrift", req_pie$Activity[i]) | grepl("adrift", req_pie$Activity[i]) | grepl("Floating", req_pie$Activity[i])| grepl("3 men & 2 boys", req_pie$Activity[i]) | grepl("float", req_pie$Activity[i]) ) { req_pie$Activity[i] <- "Adrift" } } # murder / war for (i in (1:nrow(req_pie))) { if (grepl("Murder", req_pie$Activity[i]) || grepl("submarine", req_pie$Activity[i]) | grepl("American", req_pie$Activity[i]) | grepl("torpedoed", req_pie$Activity[i]) | grepl("Torpedoed", req_pie$Activity[i]) | grepl("soldiers", req_pie$Activity[i]) | grepl("Escaping", req_pie$Activity[i]) | grepl("Japanese", req_pie$Activity[i]) | grepl("Japan", req_pie$Activity[i]) | grepl("Sinking", req_pie$Activity[i]) | grepl("SS", req_pie$Activity[i]) | grepl("foundered", req_pie$Activity[i]) | grepl("US", req_pie$Activity[i]) ) { req_pie$Activity[i] <- "murder / war " } } ``` ```{r, include=FALSE} # on se concentre sur les 3 pays les plus touchés #pie1 req_pie1 <- req_pie %>% group_by(Type) %>% summarise(Effectif=n(), Pourcentage = Effectif/3480, ypos = (cumsum(Pourcentage) - 0.5*Pourcentage)) req_pie1 <- req_pie1[-1,] req_pie1$Type df1 <- req_pie1 %>% mutate(csum = rev(cumsum(rev(Pourcentage))), pos = Pourcentage/2 + lead(csum, 1), pos = if_else(is.na(pos), Pourcentage/2, pos)) # pie 1 Répartion des Types d'attaques pie <- ggplot(data = req_pie1, aes(x="", y=Pourcentage, fill= Type)) + geom_bar(stat="identity", width=1, color= "white") + coord_polar("y", start=0) + theme_void() + scale_fill_manual(values = c("Boat" = "#DAF7A6", "Invalid" = "#E5E4E2", "Provoked" = "#FFA500", "Sea Disaster" = "#E97451", "Unprovoked" = "#6495ED")[]) + geom_label_repel(data = df1, aes(y = pos, label = paste0(round(Pourcentage*100,1), "%")), size = 5, nudge_x = 1, show.legend = FALSE) + guides(fill = guide_legend(title = "Type")) + labs(title = "Répartition des Types d'attaques") + theme(plot.title = element_text(size=15)) # geom_text(aes(label = Type), # position = position_stack(vjust = 0.5), color="white") pie ``` ```{r, include=FALSE} req_pie3 <- req_pie %>% filter(Type =="Unprovoked", Activity!="") %>% group_by(Fatal..Y.N.) %>% summarise(Effectif=n(), Pourcentage = Effectif/2444, ypos = (cumsum(Pourcentage) - 0.5*Pourcentage)) req_pie3$Fatal..Y.N.[which(req_pie3$Fatal..Y.N. =="Y")] <- "Mortel" req_pie3$Fatal..Y.N.[which(req_pie3$Fatal..Y.N. =="Autres")] <- "Non Mortel" df3 <- req_pie3 %>% mutate(csum = rev(cumsum(rev(Pourcentage))), pos = Pourcentage/2 + lead(csum, 1), pos = if_else(is.na(pos), Pourcentage/2, pos)) df3$pos[2] <- 0.95 pie3 <- ggplot(data = req_pie3, aes(x="", y=Pourcentage, fill= Fatal..Y.N.)) + geom_bar(stat="identity", width=1, color= "white") + coord_polar("y", start=0) + theme_void() + scale_fill_manual(values = c("Mortel" = "#FC4E00", "Non Mortel" = "#D4D3DC")) + geom_label_repel(data = df3, aes(y = pos, label = paste0(round(Pourcentage*100,1), "%")), size = 5, nudge_x = 1, show.legend = FALSE) + guides(fill = guide_legend(title = "Type")) + labs(title = "Intensité de dégâts des attaques 'unprovoked'") + theme(plot.title = element_text(size=15)) #, #legend.text = element_text(size = 5) ``` ```{r, include=FALSE} pie ``` ```{r, include=F} req_pie2 <- req_pie %>% filter(Type =="Unprovoked", Activity!="") %>% group_by(Activity) %>% summarise(Effectif=n(), Pourcentage = Effectif/2448) df2 <- req_pie2 %>% mutate(csum = rev(cumsum(rev(Pourcentage))), pos = Pourcentage/2 + lead(csum, 1), pos = if_else(is.na(pos), Pourcentage/2, pos)) req_pie2$Activity pie2 <- ggplot(data = req_pie2, aes(x="", y=Pourcentage, fill= Activity)) + geom_bar(stat="identity", width=1, color= "white") + coord_polar("y", start=0) + theme_void() + scale_fill_manual(values = c("Adrift" = "#B6D8F2", "Air/Sea disaster" = "#5784BA", "boat/ship accident" = "#7C4C53", "Diving" = "#D68910", "fishing" = "#2a9d8f", "murder / war " = "#BD3100", "sport/ activity" = "#F5CB5C")) + geom_label_repel(data = df2, aes(y = pos, label = paste0(round(Pourcentage*100,1), "%")), size = 5, nudge_x = 1, show.legend = FALSE) + guides(fill = guide_legend(title = "Activity")) + labs(title = "Activités des victimes lors de l'attaque") + theme(plot.title = element_text(size=15)) ``` Row ------------------------------------- ### Description des attaques les plus récurrentes ```{r} plot_grid(pie) ``` Row {.tabset .tabset-fade} ------------------------------------- ### "Unprovoked": Activities ```{r} plot_grid(pie2) ``` ### "Unprovoked": Dégats ```{r} plot_grid(pie3) ```